package com.webproject.core.controller;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.webproject.core.base.BaseResponse;
import com.webproject.core.model.User;
import com.webproject.core.service.UserService;
import com.webproject.core.vo.UserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * User相关controller
 * 用于提供User相关业务，包括User表相关的内容
 */

@RequestMapping("/api/user")
@RestController
public class UserController {

    @Autowired
    private UserService userService;


    /**
     * 通过用户id查询用户信息 如果不传userId参数 则查询自己的信息
     */
    @GetMapping("/info")
    public BaseResponse<UserVO> getUserInfo(HttpServletRequest request, @RequestParam(required = false) String userId){
        // 如果不传userId参数 则使用自己的id作为查询对象
        if (StrUtil.isEmpty(userId)){
            userId = request.getAttribute("userId").toString();
        }
        // 查询实体
        User userById = userService.findUserById(userId);
        // 因为密码不能提供查询功能 所以需要用一个新的类替换查询结果，晒出掉密码。
        // 使用工具类将类同名属性进行copy
        UserVO res = new UserVO();
        BeanUtil.copyProperties(userById,res);
        return BaseResponse.success(res);
    }
    
}
